x86: Fix legacy irq allocation issue
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 19 Jun 2009 07:43:58 +0000 (08:43 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 19 Jun 2009 07:43:58 +0000 (08:43 +0100)
When try to assign vector for irq, we should not assign vector for
legacy irq, which has fixed mapped irq<->vector relationship.

Signed-off-by: Jiang, Yunhong <yunhong.jiang@intel.com>
xen/arch/x86/irq.c

index 8abaab913ec6da5c7d4537262df17c8bad6efceb..42e2b9d0eaf377c98b7e5e707b0a8c54e185f8e7 100644 (file)
@@ -84,6 +84,12 @@ int assign_irq_vector(int irq)
 
     spin_lock(&vector_lock);
 
+    if ((irq != AUTO_ASSIGN_IRQ) && !IO_APIC_IRQ(irq))
+    {
+        spin_unlock(&vector_lock);
+        return LEGACY_VECTOR(irq);
+    }
+
     if ((irq != AUTO_ASSIGN_IRQ) && (IO_APIC_VECTOR(irq) > 0)) {
         spin_unlock(&vector_lock);
         return IO_APIC_VECTOR(irq);